如何解决Postgres:如何修复此创建查询?
我正在学习 Postgres 并尝试创建命令。但它给出了我无法理解的错误。 命令是:
//create a class to represent the user; Dapper will query the database and populate this class with information automatically
public class PosUser{
public string FullName{get;set;}
public string Designation{get;set;}
public string IDPicture{get;set;}
}
private async void btnLogin_Click(object sender,EventArgs e)
{
string conn = ConfigurationManager.ConnectionStrings["SystemDatabase"].ConnectionString;
PosUser r;
using(sqlconn = new sqlConnection(conn)){
var query = "Select designation,fullname from UserAccount where Username = @Username and Password = @Password";
var r = await conn.QuerySingleOrDefaultAsync<PosUser>(
query,new {
Username = txtUsername.Text,Password = txtPassword.Text.GetHashcode() //at least make some effort to obscure passwords in the db!
}
);
}
if(r == default){
MessageBox.Show("User not Exist!","My POS",MessageBoxButtons.RetryCancel,MessageBoxIcon.Warning);
return;
}
FrmWait waitfrm = new FrmWait();
waitfrm.Show();
if(r.Designation == "Cashier")
{
FrmPOS frm = new FrmPOS(); //if this does heavy io,move the io to a method you can call async
await frm.DoIoInHereAsync(); //like this,or in an async form load
frm.lblCashierName.Text = r.FullName;
frm.Show();
}
else if (r.Designation == "Admin")
{
Form1 frm = new Form1(); //do not do io in here
await frm.DoIoInHereAsync();
frm.lblFullname.Text = r.FullName;
frm.lblPosition.Text = r.Designation;
byte[] imgBytes = Convert.FromBase64String(r.IDPicture);
using (MemoryStream ms = new MemoryStream(imgBytes))
{
frm.pbuser.Image = Image.FromStream(ms);
}
FrmStockIn fsi = new FrmStockIn(); //do not do io in here
await fsi.DoIoInHereAsync();
fsi.txtStockinby.Text = r.FullName;
}
waitfrm.Close();
}
和错误:
CREATE TABLE Package (
id smallint NOT NULL primary key,package_name varchar ( 45 ) not null,updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,count integer(2) default null,pkg_desc varchar ( 45 ) not null,bucket_name varchar ( 45 ) not null,active bit(1),status INT(2) default null,Metadata JSONB,path varchar ( 45 ) default null,created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,run_status INT(5)
)
解决方法
您使用 integer(2)
和 INT(2)
创建列。您不得添加该号码。整数是固定大小。你也应该决定一种方式来写它
试试这个:
CREATE TABLE Package (
id smallint NOT NULL primary key,package_name varchar ( 45 ) not null,updated_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,count INT default null,pkg_desc varchar ( 45 ) not null,bucket_name varchar ( 45 ) not null,active bit(1),status INT default null,metadata JSONB,path varchar ( 45 ) default null,created_at timestamp NULL DEFAULT CURRENT_TIMESTAMP,run_status INT
)
,
integer
和 int
类型不接受参数。
你不能把它写成 integer(2)
,这会导致语法错误。
create table Package (
id smallint not null primary key,package_name varchar(45) not null,updated_at timestamp null default current_timestamp,count integer default null,pkg_desc varchar(45) not null,bucket_name varchar(45) not null,status int default null,metadata jsonb,path varchar(45) default null,created_at timestamp null default current_timestamp,run_status int
)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。