我的服务器是centos 7.0 以上 通过 命令yum install mariadb mariadb-server安装mysql后,再通过 service mysqld start启动mysql,启动失败。提示
警告:这个答案取决于编码语言。在我的情况下C#...
用户定义的SQLite函数对我来说很难实现。最后,经过很长一段时间的搜索,我能够在我的C#代码中实现它。主要功能如下:
[SQLiteFunction(Arguments = 1, FuncType = FunctionType.Scalar, Name = "Sqrt")]
class Sqrt : SQLiteFunction
{
public override object Invoke(object[] args)
{
return Math.Sqrt(Double.Parse(args[0].ToString()));
}
}
登记:
SQLiteFunction.RegisterFunction(typeof(Sqrt));
并在SELECT中使用:
SQLiteCommand com = new SQLiteCommand("select sqrt(10.42)", connection);
或者,如果只想查看代码(或者通过我的代码的所有部分),我将粘贴在SQLite数据库中计算平方根的完整工作示例代码下面,因为很难找到这方面的任何工作代码。要创建和运行此示例,请执行以下6个步骤:
<?xml version="1.0" encoding="utf-8" ?><configuration><startup useLegacyV2RuntimeActivationPolicy="true"><supportedRuntime version="v4.0"/></startup></configuration>
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<startup useLegacyV2RuntimeActivationPolicy="true">
<supportedRuntime version="v4.0"/>
</startup>
</configuration>
namespace Sqrt { partial class Form1 { /// <summary> /// Required designer variable. /// </summary> private System.ComponentModel.IContainer components = null; /// <summary> /// Clean up any resources being used. /// </summary> /// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param> protected override void Dispose(bool disposing) { if (disposing && (components != null)) { components.Dispose(); } base.Dispose(disposing); } #region Windows Form Designer generated code /// <summary> /// Required method for Designer support - do not modify /// the contents of this method with the code editor. /// </summary> private void InitializeComponent() { this.txb_Input = new System.Windows.Forms.TextBox(); this.txb_Output = new System.Windows.Forms.TextBox(); this.label1 = new System.Windows.Forms.Label(); this.label2 = new System.Windows.Forms.Label(); this.btn_Calcualte = new System.Windows.Forms.Button(); this.SuspendLayout(); // // txb_Input // this.txb_Input.Location = new System.Drawing.Point(131, 12); this.txb_Input.Name = "txb_Input"; this.txb_Input.Size = new System.Drawing.Size(201, 20); this.txb_Input.TabIndex = 0; // // txb_Output // this.txb_Output.BackColor = System.Drawing.Color.WhiteSmoke; this.txb_Output.Location = new System.Drawing.Point(131, 38); this.txb_Output.Name = "txb_Output"; this.txb_Output.ReadOnly = true; this.txb_Output.Size = new System.Drawing.Size(201, 20); this.txb_Output.TabIndex = 0; // // label1 // this.label1.AutoSize = true; this.label1.Location = new System.Drawing.Point(12, 15); this.label1.Name = "label1"; this.label1.Size = new System.Drawing.Size(31, 13); this.label1.TabIndex = 1; this.label1.Text = "Input"; // // label2 // this.label2.AutoSize = true; this.label2.Location = new System.Drawing.Point(12, 41); this.label2.Name = "label2"; this.label2.Size = new System.Drawing.Size(39, 13); this.label2.TabIndex = 1; this.label2.Text = "Output"; // // btn_Calcualte // this.btn_Calcualte.Location = new System.Drawing.Point(257, 64); this.btn_Calcualte.Name = "btn_Calcualte"; this.btn_Calcualte.Size = new System.Drawing.Size(75, 23); this.btn_Calcualte.TabIndex = 2; this.btn_Calcualte.Text = "Calculate"; this.btn_Calcualte.UseVisualStyleBackColor = true; // // Form1 // this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F); this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font; this.ClientSize = new System.Drawing.Size(344, 98); this.Controls.Add(this.btn_Calcualte); this.Controls.Add(this.label2); this.Controls.Add(this.label1); this.Controls.Add(this.txb_Output); this.Controls.Add(this.txb_Input); this.Name = "Form1"; this.Text = "Root square example"; this.ResumeLayout(false); this.PerformLayout(); } #endregion private System.Windows.Forms.TextBox txb_Input; private System.Windows.Forms.TextBox txb_Output; private System.Windows.Forms.Label label1; private System.Windows.Forms.Label label2; private System.Windows.Forms.Button btn_Calcualte; } }
namespace Sqrt { // definition of custom sqlite function [SQLiteFunction(Arguments = 1, FuncType = FunctionType.Scalar, Name = "Sqrt")] class Sqrt : SQLiteFunction { public override object Invoke(object[] args) { return Math.Sqrt(Double.Parse(args[0].ToString())); // return result of math sqrt function } } public partial class Form1 : Form { public Form1() { InitializeComponent(); this.btn_Calcualte.Click += new System.EventHandler(this.btn_Calcualte_Click); } private void btn_Calcualte_Click(object sender, EventArgs e) { if (txb_Input.Text.Length == 0) return; try { SQLiteConnection.CreateFile(AppDomain.CurrentDomain.BaseDirectory + "test.s3db"); } catch { } SQLiteConnection con = new SQLiteConnection("Data Source=test.s3db"); SQLiteFunction.RegisterFunction(typeof(Sqrt)); // register custom function con.Open(); SQLiteCommand com = new SQLiteCommand("select sqrt(" + txb_Input.Text.Replace(',', '.') + ")", con); // select result string res = com.ExecuteScalar().ToString(); txb_Output.Text = res; } } }
相似问题